
import java.util.Stack;

/**
 * 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作
 */
class MyQueue {
    //创建两个辅助栈,s1负责进元素,s2负责出元素
    Stack<Integer> s1 = new Stack();
    Stack<Integer> s2 = new Stack();

    public MyQueue() {

    }
    //入队列即s1入栈
    public void push(int x) {
        s1.push(x);
    }
    //出队列时,若s2为空则将s1元素依次入栈,最后弹出s2栈顶元素
    public int pop() {
        if (s2.isEmpty()) {
            while (!s1.isEmpty()) s2.push(s1.pop());
        }
        return s2.pop();
    }
    ////获取队头元素时,若s2为空则将s1元素依次入栈,最后获取s2栈顶元素
    public int peek() {
        if (s2.isEmpty()) {
            while (!s1.isEmpty()) s2.push(s1.pop());
        }
        return s2.peek();
    }
    //若双栈为空,则队列为空,反之不为空
    public boolean empty() {
        return s2.isEmpty() && s1.isEmpty();
    }
}